#include <iostream>

using namespace std;

int n, k;
int path, ret;

//k个格子，填每个格子：枚举1~(n-1)个数
void dfs(int pos, int begin)
{
	if(pos > k) 
	{
		if(path == n) ret++;
		return;
	}

	for(int i = begin; i <= n - 1; i++)
	{
		//可行性剪枝
		if(path + i + i * (k - pos) > n) return; // 剪枝

		path += i;
		dfs(pos + 1, i);
		path -= i; // 恢复现场
	}
}

int main()
{
	cin >> n >> k;
	dfs(1, 1);
	cout << ret << endl;

	return 0;
}

